/**
 * 预加载脚本在渲染器进程加载之前加载，并有权访问两个 渲染器全局 (例如 window 和 document) 和 Node.js 环境。
 * 
 * 在主进程通过Node的全局 process 对象访问这个信息是微不足道的。 
 * 然而，你不能直接在主进程中编辑DOM，因为它无法访问渲染器 文档 上下文。 它们存在于完全不同的进程！
 */

// 取而代之，我们將使用 contextBridge 模块来安全地实现交互：
const { contextBridge , ipcRenderer} = require('electron')
const pathModule = require('path')

window.addEventListener('DOMContentLoaded', () => {
  const replaceText = (selector, text) => {
    const element = document.getElementById(selector)
    if (element) {
      element.innerText = text
    }
  }

  for (const dependency of ['chrome', 'node', 'electron']) {
    replaceText(`${dependency}-version`, process.versions[dependency])
  }
})

contextBridge.exposeInMainWorld('myAPI', {
  desktop: true
})

contextBridge.exposeInMainWorld('darkMode', {
  toggle: () => ipcRenderer.invoke('dark-mode:toggle'),
  system: () => ipcRenderer.invoke('dark-mode:system')
})

contextBridge.exposeInMainWorld('electron', {
  startDrag: (filename) => {
    // const fileFullPath = pathModule.join(process.cwd(), fileName)
    console.info('preload -> startDrag: ', filename)
    // trigger listener in main process
    ipcRenderer.send('ondragstart', filename)
  }
})